#include "conexao.hh"

conexao::conexao(){
  HOSTNAME = "localhost";
  DATABASE = "livraria";
  USERNAME = "root";
  PASSWORD = "123456789";
  SOCKET = NULL;
}

bool conexao::cadastrar(string isbn, string titulo, string autor, string editora, string preco, string ano, string edicao){
  try{
    CONN = mysql_init(NULL);
    if(!mysql_real_connect(CONN, HOSTNAME, USERNAME, PASSWORD, DATABASE, PORT, SOCKET, 0)){
      cout << mysql_error(CONN) << endl;
      return false;
    }
    string str = "INSERT INTO livraria.livro (isbn, titulo, autor, editora, preco, ano, edicao) VALUES ('"+isbn+"', '"+titulo+"', '"+autor+"', '"+editora+"', '"+preco+"', '"+ano+"', '"+edicao+"')";
    const char* c = str.c_str();
    if(mysql_query(CONN, c)){
      cout << mysql_error(CONN) << endl;
      return false;
    }
    return true;
  } catch(char *e){
    cout << e << endl;
    return false;
  }
}

bool conexao::imprimir(){
  try{
    CONN = mysql_init(NULL);
    if(!mysql_real_connect(CONN, HOSTNAME, USERNAME, PASSWORD, DATABASE, PORT, SOCKET, 0)){
      cout << mysql_error(CONN) << endl;
      return false;
    }
    if(mysql_query(CONN, "SELECT * FROM livraria.livro")){
      cout << mysql_error(CONN) << endl;
      return false;
    }
    RES = mysql_use_result(CONN);
    printf("\n%-18s %-50s  %-6s", "ISBN:", "Título:", "Preço:");
    while((ROW = mysql_fetch_row(RES)) != NULL){
      printf("\n%-18s %-50s %s", ROW[0], ROW[1], ROW[4]);
    }
    mysql_free_result(RES);
    mysql_close(CONN);
    return true;
  }catch (char *e){
    cout << e << endl;
    return false;
  }
}

bool conexao::remover(string isbn){
  try{
    CONN = mysql_init(NULL);
    if(!mysql_real_connect(CONN, HOSTNAME, USERNAME, PASSWORD, DATABASE, PORT, SOCKET, 0)){
      cout << mysql_error(CONN) << endl;
      return false;
    }
    string str = "DELETE FROM livraria.livro WHERE isbn="+isbn;
    const char* c = str.c_str();
    if(mysql_query(CONN, c)){
      cout << mysql_error(CONN) << endl;
      return false;
    }
    return true;
  } catch(char *e){
    cout << e << endl;
    return false;
  }
}

void conexao::pesquisar(string x, string y){
  try{
    CONN = mysql_init(NULL);
    if(!mysql_real_connect(CONN, HOSTNAME, USERNAME, PASSWORD, DATABASE, PORT, SOCKET, 0)){
      cout << mysql_error(CONN) << endl;
    }
    string str;
    if (y == "isbn") {
      str = "SELECT * FROM livraria.livro WHERE isbn='"+x+"'";
    } else if (y == "ano" || y == "preco") {
      str = "SELECT * FROM livraria.livro WHERE "+y+"="+x;
    } else {
      str = "SELECT * FROM livraria.livro WHERE "+y+" like '%"+x+"%'";
    }
    const char* c = str.c_str();
    if(mysql_query(CONN, c)){
      cout << mysql_error(CONN) << endl;
    }
    RES = mysql_use_result(CONN);
    while((ROW = mysql_fetch_row(RES)) != NULL){
      cout << "\nISBN: " << ROW[0] << endl;
      cout << "Título: " << ROW[1] << endl;
      cout << "Autor: " << ROW[2] << endl;
      cout << "Editora: " << ROW[3] << endl;
      cout << "Preço: " << ROW[4] << endl;
      cout << "Ano: " << ROW[5] << endl;
      cout << "Edição: " << ROW[6] << endl;
    }
    mysql_free_result(RES);
    mysql_close(CONN);
  } catch(char *e){
    cout << e << endl;
  }
}

bool conexao::modificar(string x, string y, string z){
  try{
    CONN = mysql_init(NULL);
    if(!mysql_real_connect(CONN, HOSTNAME, USERNAME, PASSWORD, DATABASE, PORT, SOCKET, 0)){
      cout << mysql_error(CONN) << endl;
      return false;
    }
    string str = "UPDATE livro SET "+x+"='"+y+"' WHERE isbn='"+z+"'";
    const char* c = str.c_str();
    if(mysql_query(CONN, c)){
      cout << mysql_error(CONN) << endl;
      return false;
    }
    return true;
  } catch(char *e){
    cout << e << endl;
    return false;
  }
}

bool conexao::verificar(string x, string y){
  try{
    CONN = mysql_init(NULL);
    if(!mysql_real_connect(CONN, HOSTNAME, USERNAME, PASSWORD, DATABASE, PORT, SOCKET, 0)){
      cout << mysql_error(CONN) << endl;
      return false;
    }
    string str;
    if (y == "isbn"){
      str = "SELECT * FROM livraria.livro WHERE isbn='"+x+"'";
    } else if (y == "preco" || y == "ano") {
      str = "SELECT * FROM livraria.livro WHERE "+y+"="+x;
    } else {
      str = "SELECT * FROM livraria.livro WHERE "+y+" like '%"+x+"%'";
    }
    const char* c = str.c_str();
    if(mysql_query(CONN, c)){
      cout << mysql_error(CONN) << endl;
      return false;
    }
    RES = mysql_use_result(CONN);
    if((ROW = mysql_fetch_row(RES)) == NULL){
      cout << "\nNão encontrado" << endl;
      return false;
    }
    mysql_free_result(RES);
    mysql_close(CONN);
    return true;
  } catch(char *e){
    cout << e << endl;
    return false;
  }
}
